/**
 * 环境变量配置处理
 * 统一管理项目中使用的环境变量，并提供类型安全的访问方式
 */

// 开发模式判断
export const isDev = import.meta.env.DEV
// 生产模式判断
export const isProd = import.meta.env.PROD
// 当前模式
export const mode = import.meta.env.MODE

/**
 * 解析数字
 */
const parseNumber = (value: string | undefined, defaultValue: number): number => {
  if (!value) return defaultValue
  const num = Number(value)
  return isNaN(num) ? defaultValue : num
}

/**
 * 解析布尔值
 */
const parseBool = (value: string | undefined, defaultValue: boolean): boolean => {
  if (!value) return defaultValue
  return value.toLowerCase() === 'true'
}

/**
 * 环境变量配置
 */
export const envConfig = {
  /** 应用标题 */
  appTitle: import.meta.env.VITE_APP_TITLE || 'Vue3项目',
  
  /** API配置 */
  api: {
    /** API基础URL */
    baseUrl: import.meta.env.VITE_APP_API_BASE_URL || 'http://localhost:3000',
    /** API超时时间（毫秒） */
    timeout: parseNumber(import.meta.env.VITE_APP_API_TIMEOUT, 10000)
  },
  
  /** 数据源配置 */
  dataSource: {
    /** 是否使用模拟数据 */
    useMockData: parseBool(import.meta.env.VITE_APP_USE_MOCK, isDev),
    
    /** 模拟数据延迟（毫秒） */
    mockDelay: {
      /** 短延迟（用于简单操作） */
      short: parseNumber(import.meta.env.VITE_APP_MOCK_DELAY_SHORT, 300),
      /** 一般请求延迟 */
      normal: parseNumber(import.meta.env.VITE_APP_MOCK_DELAY_NORMAL, 800),
      /** 长延迟（用于复杂操作） */
      long: parseNumber(import.meta.env.VITE_APP_MOCK_DELAY_LONG, 1500)
    }
  },
  
  /** 存储配置 */
  storage: {
    /** 本地存储前缀 */
    prefix: import.meta.env.VITE_APP_STORAGE_PREFIX || 'vue3_',
    /** token存储key */
    tokenKey: 'token',
    /** 用户信息存储key */
    userInfoKey: 'userInfo',
    /** 登录状态存储key */
    loginStatusKey: 'isLoggedIn'
  },
  
  /** 日志配置 */
  logger: {
    /** 日志级别 */
    level: import.meta.env.VITE_APP_LOG_LEVEL || (isDev ? 'debug' : 'error')
  }
}

export default envConfig 